草庐IT

C++ CUDA 指向成员的指针

全部标签

c++ - 基类的函数模板是否可以分配给指向成员函数的指针

下面的代码应该在C++98/03中编译吗?structBase{templatevoidfunc(){}voidnorm(){}};structDerived:publicBase{};templatestructUsage{typedefvoid(U::*Method)();Usage(Methodtest){}};intmain(){Usagegood(&Derived::norm);//"Error:Cannotusevoid(*)()toinitializeUsage."onnextlineUsagebad(&Derived::func);return0;}这段代码片段在我尝试

c++ - 在 DDD 中隐藏静态数据成员,或者只显示某些成员

我的DDD数据显示窗口过于拥挤,因为每个对象都与其静态数据成员及其实例数据成员一起列出。是否有隐藏这些的选项?编辑:更好的是,我可以获取一个数组切片并为每个元素仅显示xy和z成员吗? 最佳答案 您可以为您的代码编写一个pretty-print。例子:namespaceTest{structFilter{staticunsigneda;staticunsignedb;staticunsignedc;//,,,unsignedx;unsignedy;unsignedz;Filter():x(1),y(2),z(3){}};unsigne

c++ - 在 C++ 中什么时候使用点、箭头或双冒号来引用类的成员?

从其他C派生语言(如Java或C#)到C++,起初非常令人困惑的是C++具有三种引用类成员的方法:a::b,a.b和a->b。我什么时候使用这些运算符中的哪一个?_(注意:这是[StackOverflow的C++常见问题解答](https://stackoverflow.com/questions/tagged/c++-faq)的一个条目。如果您想批评以这种形式提供常见问题解答的想法,然后[开始这一切的meta上的帖子](https://meta.stackexchange.com/questions/68647/setting-up-a-faq-for-the-c-tag)将是这样做

c++ - 如何分析指针别名的性能影响?

我的代码使用了很多适合MATLAB/FORTRAN风格的vector运算的重复和大量代数运算。我一直在考虑切换到std::valarray甚至Blitz++来利用这一点。但在进行转换之前,我如何分析造成C++和FORTRAN之间性能差距的主要因素之一——指针别名——在多大程度上影响我的代码的性能,而不是用restrict并测试差异。VisualStudio2012/2013是否提供了一些实现此目的的方法?也许是不同的IDE? 最佳答案 C/C++语言没有经过优化,在处理数学问题时表现不佳。对于这些操作,我只建议尝试更改语言,或者,如

c++ - to_string 不是 std 的成员,g++ (mingw)

我正在制作一个小型词汇内存程序,其中会随机闪现单词以了解含义。正如BjarneStroustroup告诉我们的那样,我想使用标准C++库,但我一开始就遇到了一个看似奇怪的问题。我想将一个long整数更改为std::string以便能够将其存储在文件中。为此,我使用了to_string()。问题是,当我用g++(版本4.7.0,如其--‍version标志中所述)编译它时,它说:PSC:\Users\Anurag\SkyDrive\College\Programs>g++-std=c++0xttd.cppttd.cpp:Infunction'intmain()':ttd.cpp:11:2

c++ - 如何在不依赖 numpy.i 的情况下使用指针将 numpy 数组传递给 C++/SWIG?

有没有一种方法可以通过仅使用指向第一个元素的指针将numpy数组传递到C++/SWIG?我有一个C++函数,它预期一个3×N矩阵,它应该存储在列主索引的连续内存中。因此,函数调用采用以下参数:(double*mat3Xin,double*mat3Xout,intnumTrip)其中numTrip是矩阵的N维(即三元组的数量)。由于输入和就地输出的大小相同,因此我不需要传入它。有没有一种方法可以在SWIG中轻松处理此问题,而无需使用swig的重命名内联功能并创建一个接受附加参数的辅助函数swig的numpy接口(interface)需要矩阵?我目前正在研究辅助函数中的矩阵,然后调用原始函

C++:不能调用没有对象的成员函数

我有一个名为MessageQueue的类,它有2个方法(一个模板,一个普通),签名不同,但名称相同。所有的方法都是静态的。在我的类MessageQueue(MessageQueue.h)中:templatevoidMessageQueue::sendMessage(const___handlequeue,constMESSAGE_ACTION&action,constT*pMessage){sendMessage(queue,action,(void*)pMessage,sizeof(pMessage));}在MessageQueue.cpp中:voidMessageQueue::se

C++ 严格的别名规则和指向成员的指针

以下代码在G++中产生警告:#include#includetemplateQT::*pointer_to(PT::*p,QP::*q){typedefQT::*output_ptr;//warning:dereferencingtype-punnedpointerwillbreakstrict-aliasingrules[-Wstrict-aliasing]size_ttmp=reinterpret_cast(p)+reinterpret_cast(q);returnreinterpret_cast(tmp);}structA{intx;};structB{Aa;};intmain(

c++ - 在不使用静态成员的情况下跨对象树共享数据的策略

我处于这样一种情况,我需要在多态对象树的许多实例之间共享数据,但话又说回来,我需要共享数据是“每树”的,所以在基类中使用静态类成员是不行的确实是一个选择。我不想用指向共享数据的额外成员指针“加重”每个实例,所以我目前的方法(考虑到我使用树)是将共享数据作为树根节点的成员,并且每次访问共享数据通过一系列间接访问,具体取决于访问“全局树”数据的特定节点的深度。由于在某些情况下共享数据将被非常频繁地访问(每秒数百万次......至少这是预期的),我想知道是否有一些设计模式可以帮助我避免间接访问根目录节点,同时仍然没有给对象的足迹引入额外的膨胀。虽然可以将根节点指针“缓存”为本地指针,例如访问

c++ - 如何从 Clang 中的 CallExpr 获取函数指针的参数?

我正在尝试分析其中包含函数调用的C源代码。我能够使用下面的源代码分析正常的函数调用以毫无问题地获取它们的参数,其中ce是一个CallExpr对象:1.if(ce!=NULL){2.QualTypeq=ce->getType();3.constType*t=q.getTypePtrOrNull();4.5.if(t!=NULL){6.llvm::errs()isFunctionPointerType()isPointerType()getCalleeDecl();13.while(D->getPreviousDecl()!=NULL)14.D=D->getPreviousDecl();1